package chapter03;

public class MaxProfit123 {
    /**
     * 一天中有五种状态 求每一种状态能够获得的利润
     * 什么都没干：那就是0，不考虑了
     * buy1第一次买入：-prince[i]
     * sell1第一次卖出：price[i]+buy1
     * buy2第二次买入：sell1+(-price[i])
     * sell2第二次卖出：price[i]+buy2
     * 求每一次选择的最大值
     * 初始化第0天四种状态的利润
     * sell1=0 buy1=-prices[0] sell2=0 buy2=-prices[0]
     */
    public int maxProfit(int[] prices) {
        int sell1=0,buy1=-prices[0],sell2=0,buy2=-prices[0];
        for(int i=1;i<prices.length;i++){
            buy1=Math.max(buy1,-prices[i]);
            sell1=Math.max(sell1,prices[i]+buy1);
            buy2=Math.max(buy2,-prices[i]+sell1);
            sell2=Math.max(sell2,prices[i]+buy2);
        }
        return sell2;
    }

    //动态规划
}
